package com.yhg.xinyi;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import android.app.AlertDialog;
import android.os.Bundle;
import android.widget.RadioGroup;
import android.widget.Toast;

import com.baidu.ocr.sdk.OCR;
import com.baidu.ocr.sdk.OnResultListener;
import com.baidu.ocr.sdk.exception.OCRError;
import com.baidu.ocr.sdk.model.AccessToken;
import com.google.gson.Gson;
import com.yhg.xinyi.bean.StarBean;
import com.yhg.xinyi.luckfrag.LuckFragment;
import com.yhg.xinyi.mefrag.MeFragment;
import com.yhg.xinyi.parnterfrag.PartnerFragment;
import com.yhg.xinyi.starfrag.StarFragment;
import com.yhg.xinyi.utils.AssetsUtils;

public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {

    RadioGroup mainRg;
    //声明四个按钮对应的Fragment对象
    Fragment starFrag,luckFrag,partnerFrag,meFrag;
    private FragmentManager manager;
/*******/
//    private boolean hasGotToken = false;
//    private AlertDialog.Builder alertDialog;
/*******/
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//        // 初始化，只需要调用一次
//        AssetsDatabaseManager.initManager(getApplicationContext());
//        // 获取管理对象，因为数据库需要通过管理对象才能够获取
//        AssetsDatabaseManager mg = AssetsDatabaseManager.getManager();
//        // 通过管理对象获取数据库
//        addressDB = mg.getDatabase("movie.db");

//        initAccessTokenWithAkSk();

        mainRg = findViewById(R.id.main_rg);
        //设置点击事件的监听
        mainRg.setOnCheckedChangeListener(this);

        //加载星座相关数据
        StarBean infoBean = loadData();
        Bundle bundle = new Bundle();
        bundle.putSerializable("info",infoBean);

        //创建碎片对象
        starFrag = new StarFragment();
        starFrag.setArguments(bundle);
        luckFrag = new LuckFragment();
        luckFrag.setArguments(bundle);
        partnerFrag = new PartnerFragment();
        partnerFrag.setArguments(bundle);
        meFrag = new MeFragment();
        meFrag.setArguments(bundle);

        //将四个Fragment进行动态加载，一起加载到布局当中。replace   add/hide/show
        addFragmentPage();

    }

    /* 读取assets文件夹下的xzcontent.json文件*/
    private StarBean loadData() {
        String json = AssetsUtils.getJsonFromAssets(this, "xzcontent/xzcontent.json");
        Gson gson = new Gson();
        StarBean infoBean = gson.fromJson(json, StarBean.class);
        AssetsUtils.saveBitmapFromAssets(this,infoBean);
        return infoBean;
    }


    /**
     * 将主页当中的碎片一起加载进入布局,有用的显示，暂时无用的隐藏
     */
    private void addFragmentPage() {
        //1、创建碎片管理者对象
        manager = getSupportFragmentManager();
        //2、创建碎片处理事物的对象
        FragmentTransaction transaction = manager.beginTransaction();
        //3、将4个fragment统一添加到布局中
        transaction.add(R.id.main_layout_center,starFrag);
        transaction.add(R.id.main_layout_center,partnerFrag);
        transaction.add(R.id.main_layout_center,luckFrag);
        transaction.add(R.id.main_layout_center,meFrag);
        //4、隐藏后面的三个
        transaction.hide(partnerFrag);
        transaction.hide(luckFrag);
        transaction.hide(meFrag);
        //5、提交碎片改变后的事物
        transaction.commit();
    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        FragmentTransaction transaction = manager.beginTransaction();
        switch (checkedId){
            case R.id.main_rb_star:
                transaction.hide(partnerFrag);
                transaction.hide(luckFrag);
                transaction.hide(meFrag);
                transaction.show(starFrag);
                break;

            case R.id.main_rb_partner:
                transaction.hide(starFrag);
                transaction.hide(luckFrag);
                transaction.hide(meFrag);
                transaction.show(partnerFrag);
                break;

            case R.id.main_rb_luck:
                transaction.hide(starFrag);
                transaction.hide(partnerFrag);
                transaction.hide(meFrag);
                transaction.show(luckFrag);
                break;

            case R.id.main_rb_me:
                transaction.hide(starFrag);
                transaction.hide(partnerFrag);
                transaction.hide(luckFrag);
                transaction.show(meFrag);
                break;
        }
        transaction.commit();
    }


    /*******************************************************/
//    private boolean checkTokenStatus() {
//        if (!hasGotToken) {
//            Toast.makeText(getApplicationContext(), "token还未成功获取", Toast.LENGTH_LONG).show();
//        }
//        return hasGotToken;
//    }
//
//    /**
//     * 以license文件方式初始化
//     */
//    private void initAccessToken() {
//        OCR.getInstance(this).initAccessToken(new OnResultListener<AccessToken>() {
//            @Override
//            public void onResult(AccessToken accessToken) {
//                String token = accessToken.getAccessToken();
//                hasGotToken = true;
//            }
//
//            @Override
//            public void onError(OCRError error) {
//                error.printStackTrace();
//                alertText("licence方式获取token失败", error.getMessage());
//            }
//        }, getApplicationContext());
//    }
//
//    /**
//     * 用明文ak，sk初始化
//     */
//    private void initAccessTokenWithAkSk() {
//        OCR.getInstance(this).initAccessTokenWithAkSk(new OnResultListener<AccessToken>() {
//            @Override
//            public void onResult(AccessToken result) {
//                String token = result.getAccessToken();
//                hasGotToken = true;
//            }
//
//            @Override
//            public void onError(OCRError error) {
//                error.printStackTrace();
//                alertText("AK，SK方式获取token失败", error.getMessage());
//            }
//        }, getApplicationContext(),  "Gaf2EFOcczUyuWHnuUEptavi", "BY7sjxmHanVxGriqWxOGjAF87ynA7HYh");
//    }
//
//    /**
//     * 自定义license的文件路径和文件名称，以license文件方式初始化
//     */
//    private void initAccessTokenLicenseFile() {
//        OCR.getInstance(this).initAccessToken(new OnResultListener<AccessToken>() {
//            @Override
//            public void onResult(AccessToken accessToken) {
//                String token = accessToken.getAccessToken();
//                hasGotToken = true;
//            }
//
//            @Override
//            public void onError(OCRError error) {
//                error.printStackTrace();
//                alertText("自定义文件路径licence方式获取token失败", error.getMessage());
//            }
//        }, "aip.license", getApplicationContext());
//    }
//
//
//    private void alertText(final String title, final String message) {
//        this.runOnUiThread(new Runnable() {
//            @Override
//            public void run() {
//                alertDialog.setTitle(title)
//                        .setMessage(message)
//                        .setPositiveButton("确定", null)
//                        .show();
//            }
//        });
//    }
//
//    private void infoPopText(final String result) {
//        alertText("", result);
//    }


}